package com.tedu.interceptor.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * SpringMVC框架提供的拦截器
 * 可以在任何请求路径上使用，常应用于对Controller的某些请求进行控制
 * 作用:
 * 1:在controller前后可以进行拦截，流程执行完毕后还可以拦截
 * 2:实际应用中可以进行如:
 *      权限控制
 *      日志记录
 *      性能测试
 *
 *  定义拦截器需要:
 *  1:实现框架提供的拦截器接口:HandlerInterceptor
 *  2:重写其中的三个拦截方法
 */
public class MyInterceptor implements HandlerInterceptor {
    /**
     * 1:请求到达处理前执行
     * @param request       请求对象，封装着浏览器发送过来的请求内容
     * @param response      响应对象，表示我们给浏览器回复的内容
     * @param handler       处理器，负责流转下一步的流程
     * @return              true:可以继续向后流转，false:不要进行后续操作，直接返回
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("MyInterceptor的preHandle()方法执行了");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("MyInterceptor的postHandle()方法执行了");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("MyInterceptor的afterCompletion()方法执行了");
    }
}








